package com.itlong.cloud.enumerate;

import lombok.Getter;

/**
 * <desc>
 *  物业账单收费方式.
 * </desc>
 *
 * @createDate 2018-08-14
 */
public enum PaymentTypeEnum {


    OTHER_PAY("其他支付方式",7),             //其他支付方式
    VILLAGE_ALIPAY("小区收款码-支付宝",6),            //小区收款码-支付宝
    VILLAGE_WECHAT_PAY("小区收款码-微信",5),            //小区收款码-微信
    WECHAT_PAY("微信转账",4),           //微信支付
    ALI_PAY("支付宝转账",3),            //支付宝转账
    BANK_PAY("银行转账",2),            //银行转账
    MONEY_PAY("现金",1);             //现金支付

    @Getter
    private Integer type;  //物业账单收费方式类型

    @Getter
    private String description;  //物业账单收费方式类型描述（名称）


    /**
     * <desc>
     * 构造函数.
     * </desc>
     *
     * @param type        物业账单收费方式类型
     * @param description 物业账单收费方式类型描述（名称）
     * @author Qiang.S
     * @createDate 2018-08-14
     */
    PaymentTypeEnum(String description, Integer type) {
        this.description = description;
        this.type = type;
    }


    /**
     * <desc>
     * 根据物业账单收费方式类型获取描述（名称）.
     * </desc>
     *
     * @param type 物业账单收费方式类型
     * @return 物业账单收费方式类型描述（名称）
     * @author Qiang.S
     * @createDate 2018-08-14
     */
    public static String getDescription(int type) {
        PaymentTypeEnum[] types = PaymentTypeEnum.values();
        for (PaymentTypeEnum limitCategory : types) {
            if (limitCategory.getType() == type) {
                return limitCategory.getDescription();
            }
        }
        return "";
    }


    /**
     * <desc>
     * 根据物业账单收费方式类型（名称）获取类型.
     * </desc>
     *
     * @param description 物业账单收费方式类型描述（名称）
     * @return 物业账单收费方式类型
     * @author Qiang.S
     * @createDate 2018-08-14
     */
    public static Integer getType(String description) {
        PaymentTypeEnum[] types = PaymentTypeEnum.values();
        for (PaymentTypeEnum limitCategory : types) {
            if (limitCategory.getDescription().equalsIgnoreCase(description)) {
                return limitCategory.getType();
            }
        }
        return WECHAT_PAY.getType();
    }
}
